package com.magold.sprite;

import org.andengine.entity.shape.IAreaShape;
import org.andengine.entity.sprite.AnimatedSprite.IAnimationListener;
import org.andengine.entity.sprite.IAnimationData;
import org.andengine.opengl.texture.region.ITextureRegion;
import org.andengine.opengl.texture.region.ITiledTextureRegion;

public interface IMultiTextureSprite extends IAreaShape {
	public static final int DEFAULT_REFRESH_GAP = 150;
	
	public void setAnimationIndex(int animationIndex, boolean autoStart);
	public void put(int key, ITiledTextureRegion value);
	public int getCurrentTextureKey();
	
	public boolean isAnimationRunning();
	
	public void animate();
	public void animate(long pFrameDurationEach);
	public void animate(IAnimationData pAnimationData);
	public void animate(long pFrameDurationEach, boolean pLoop, IAnimationListener pAnimationListener);
	public void animate(long pFrameDurationEach, int pLoopCount, IAnimationListener pAnimationListener);
	public void stopAnimation(final int pTileIndex);
	public void stopAnimation();
	
	public int getCurrentTileIndex();
	public int getTileCount();
	public ITiledTextureRegion getTiledTextureRegion();
	
	public ITextureRegion getTextureRegion();
	public boolean isFlippedHorizontal();
	public void setFlippedHorizontal(final boolean pFlippedHorizontal);
	public void setFlippedVertical(final boolean pFlippedVertical);
	
	public void resetRotationCenter();
	public void resetScaleCenter();
	public void resetSkewCenter();

}
